<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
      xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
    <th:block th:include="include :: header('活动列表')" />
</head>
<body class="gray-bg">
<div class="container-div">
    <div class="row">
        <div class="col-sm-12 search-collapse">
            <form id="activity-form">
                <div class="select-list">
                    <ul>
                        <li>
                            活动标题：<input type="text" name="title"/>
                        </li>
                        <li>
                            运动类别：
                            <select name="category">
                                <option value="">所有</option>
                                <option value="羽毛球">羽毛球</option>
                                <option value="篮球">篮球</option>
                                <option value="足球">足球</option>
                                <option value="跑步">跑步</option>
                            </select>
                        </li>
                        <li>
                            活动状态：
                            <select name="status" th:with="type=${@dict.getType('activity_join_status')}">
                                <option value="">所有</option>
                                <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
                            </select>
                        </li>
                        <li>
                            <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
                            <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
                        </li>
                    </ul>
                </div>
            </form>
        </div>

        <div class="btn-group-sm" id="toolbar" role="group">
            <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:activity:add">
                <i class="fa fa-plus"></i> 新增
            </a>
            <a class="btn btn-primary" onclick="$.operate.edit()" shiro:hasPermission="system:activity:edit">
                <i class="fa fa-edit"></i> 修改
            </a>
            <a class="btn btn-danger" onclick="$.operate.removeAll()" shiro:hasPermission="system:activity:remove">
                <i class="fa fa-remove"></i> 删除
            </a>
            <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:activity:export">
                <i class="fa fa-download"></i> 导出
            </a>
            <!-- 添加刷新按钮 -->
            <a class="btn btn-info" onclick="refreshTable()">
                <i class="fa fa-refresh"></i> 刷新
            </a>
        </div>

        <div class="col-sm-12 select-table table-striped">
            <table id="bootstrap-table"></table>
        </div>
    </div>
</div>

<th:block th:include="include :: footer" />
<script th:inline="javascript">
    var prefix = ctx + "system/activity";
    var datas  = [[${@dict.getType('sys_normal_disable')}]];
    // 权限标识变量
    var editFlag = [[${@permission.hasPermi('system:activity:edit')}]];
    var removeFlag = [[${@permission.hasPermi('system:activity:remove')}]];
    // 保存表格实例
    var tableIns;

    $(function () {
        var options = {
            url: prefix + "/list",
            createUrl: prefix + "/add",
            updateUrl: prefix + "/edit/{id}",
            removeUrl: prefix + "/remove",
            exportUrl: prefix + "/export",
            modalName: "活动",
            columns: [
                {checkbox: true},
                {field: 'id', title: '编号', visible: true},
                {field: 'userId', title: '活动ID', visible: true},
                {field: 'title', title: '活动标题'},
                {field: 'category', title: '运动类别'},
                {field: 'locationName', title: '地点'},
                {field: 'eventDate', title: '活动日期', formatter: function (v) {
                        return v ? $.common.dateFormat(v * 1000, 'yyyy-MM-dd') : '-';
                    }},
                {field: 'startTime', title: '开始时间', formatter: function (v) {
                        return v ? $.common.dateFormat(v * 1000, 'HH:mm') : '-';
                    }},
                {field: 'endTime', title: '结束时间', formatter: function (v) {
                        return v ? $.common.dateFormat(v * 1000, 'HH:mm') : '-';
                    }},
                {field: 'createTime', title: '创建时间', formatter: function (v) {
                        return v ? $.common.dateFormat(v, 'yyyy-MM-dd HH:mm:ss') : '-';
                    }},
                {field: 'maxPeople', title: '最大人数'},
                {field: 'minPeople', title: '最少人数'},
                {field: 'joined', title: '已报人数'},
                {
                    field: 'status',
                    title: '活动状态',
                    formatter: function (value) {
                        // 数据库：0=失败 1=拼团中 2=已成团 3=取消
                        var map = {
                            0: '<span class="label label-info">拼团中</span>',
                            1: '<span class="label label-success">已成团</span>',
                            2: '<span class="label label-danger">已取消</span>',
                            3: '<span class="label label-default">已结束</span>'
                        };
                        return map[value] || '<span class="label label-warning">未知</span>';
                    }
                }
            ]
        };
        // 初始化表格并保存实例
        tableIns = $.table.init(options);
    });

    /* 刷新表格方法 */
    function refreshTable() {
        // 显示加载提示避免响应提交问题
        if ($.modal) {
            $.modal.loading("正在刷新数据，请稍候...");
        }
        // 刷新表格
        tableIns.refresh({
            onLoadSuccess: function() {
                // 隐藏加载提示
                if ($.modal) {
                    $.modal.closeLoading();
                }
            },
            onLoadError: function() {
                // 错误处理
                if ($.modal) {
                    $.modal.closeLoading();
                }
            }
        });
    }

    /* ---------------- 新增 / 修改 / 删除后立即回显 ---------------- */
    // 统一监听弹窗提交成功事件（新增、修改、批量删除都会触发）
    $(document).on('submitSuccess', function () {
        refreshTable();   // 立即刷新
    });

    /* 行内删除：避免响应提交冲突 */
    function removeRow(id) {
        // 验证权限
        if (!removeFlag) {
            if ($.modal) {
                $.modal.alertWarning("您没有删除活动的权限！");
            }
            return;
        }

        if ($.modal) {
            $.modal.confirm("确定删除该条活动吗？", function () {
                // 防止重复提交
                var loading = $.modal.loading("正在删除，请稍候...");
                $.operate.post(prefix + "/remove", { "id": id }, function () {
                    $.modal.close(loading);
                    refreshTable();   // 删除后刷新
                }, function() {
                    $.modal.close(loading);
                });
            });
        }
    }

    // 防止页面卸载时的异常
    $(window).on('beforeunload', function() {
        // 确保所有模态框已关闭
        if ($.modal) {
            $.modal.closeAll();
        }
    });
</script>
</body>
</html>

